;Mostrar una secuencia por el puerto D, capturando un orden de secuencia por el puerto B y duración de timer por el puerto C
list p=16f877
include "p16f877.inc"
__CONFIG _BODEN_ON & _CP_OFF & _PWRTE_ON & _WDT_OFF & _WRT_ENABLE_ON & _XT_OSC & _DEBUG_OFF & _CPD_OFF & _LVP_OFF
;-------------declaraciones----------------
umbral equ 7Ah
;-------------inicio programa----------------
org 0h
goto inicio
org 5h
;-------------Fin de programa----------------
;puerto de salida del estado ON/OF
conf_port_c
banksel TRISC
movlw 0x00
movwf TRISC
return
;puerto de entrada del umbral
conf_port_b
banksel TRISB
movlw 0xff
movwf TRISB
return
;Configuracion del retardo
conf_t1con
banksel T1CON
clrf T1CON
clrf TMR1H
clrf TMR1L
clrf PIR1
movlw 0x30
movwf T1CON
bsf T1CON,TMR1ON
return
;---------------------Generacion del reloj(200Mz)-----------------------
;--------------------------No se está utilizando---------------------
delay_clock
movlw 0xCA
movwf TMR1L
movlw 0xF3
movwf TMR1H
retardo_reloj
btfss PIR1,TMR1IF
goto retardo_reloj
bcf PIR1,TMR1IF
return
;--------------------------------------------------------------------
;-------------------------ADCON0-------------------------------------------
;(bit7)0 = Left justified
;(bit 3-0) :Port Configuration Control bits:---->Vref+=Vdd, Vref-=Vss
;-------------------------ADCON0---------------------------------------------
;(bit 7-6)10 = FOSC/32
;(bit 5-3)000 = channel 0, (RA0/AN0)
;--------------------------------confg de la conversion----------------------
conf_ad
bsf STATUS, RP0 ;sel banco1
clrf ADCON1
bcf STATUS, RP0 ;sel banco0
movlw 0x81
movwf ADCON0
return
;-----------------------Imprimir el estado ON/OF---------------------
;--------------------------No se está utilizando---------------------
escribir
banksel PORTC
clrf PORTC
;movf valor,W
movwf PORTC
return
;---------------------------------------------------------------------
leer_umbral
banksel PORTB
movf PORTB,W
movwf umbral
return
inicio
call conf_port_b ;Entrada del umbral
call conf_port_c ;Salida del estado ON/OF
call conf_ad
transforme
call conf_t1con
call leer_umbral
bsf ADCON0, GO
pruebe
btfsc ADCON0, GO
goto pruebe
movf ADRESH, W
subwf umbral
btfss STATUS, C ;Si esta en set es porque W               ( geocities.com/tiger928rs)